# 导入所需的库
import pywt
import numpy as np
import matplotlib.pyplot as plt

# 准备数据：一个简单的正弦波信号
t = np.linspace(0, 1, 200)
signal = np.sin(2 * np.pi * 5 * t) + 0.5 * np.sin(2 * np.pi * 20 * t)

# 选择小波函数
wavelet = 'haar'

# 执行单级小波分解
coeffs = pywt.wavedec(signal, wavelet, level=1)

# 从系数重建信号
reconstructed_signal = pywt.waverec(coeffs, wavelet)

# 可视化小波分解系数
plt.figure(figsize=(12, 8))

# 绘制近似系数
plt.subplot(2, 2, 1)
plt.plot(signal)
plt.title('Original Signal')
plt.gray()

# 绘制第一级近似系数
plt.subplot(2, 2, 2)
plt.plot(coeffs[0])
plt.title('Level 1 Approximation Coefficients')
plt.gray()

# 绘制第一级细节系数
plt.subplot(2, 2, 3)
plt.plot(coeffs[1])
plt.title('Level 1 Detail Coefficients')
plt.gray()

# 显示图表
plt.tight_layout()
plt.show()

# # 可视化原始信号和重建后的信号
# plt.figure(figsize=(12, 6))
# plt.subplot(2, 1, 1)
# plt.plot(t, signal)
# plt.title('Original Signal')
#
# plt.subplot(2, 1, 2)
# plt.plot(t, reconstructed_signal)
# plt.title('Reconstructed Signal')
#
# # 显示图表
# plt.tight_layout()
# plt.show()